package com.chenyongjing.design.pattern.decorator.general;

public class ConcreteDecocatorA extends Decorator{
    /**
     * 构造方法，传入组件对象
     *
     * @param component
     */
    public ConcreteDecocatorA(Component component) {
        super(component);
    }

    /**
     * 在调用父类的operation方法之前需要执行的操作
     */
    private void operationFirst(){
        System.out.println("装饰器A在操作前的操作");
    }

    /**
     * 在调用父类的operation方法之后需要执行操作
     */
    private void operationLast(){
        System.out.println("装饰器A在操作后的操作");
    }

    public void operation(){
        // 调用父类的方法，可以在调用前后执行
        // 添加的功能
        operationFirst();
        // 这里可以选择性的调用父类的方法，如果不调用则相当于完全改写了方法，
        super.operation();
        // 添加的功能
        operationLast();
    }
}
